home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh3x
/
sh33a.d64
/
quellcode giga
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
7KB
|
290 lines
10 ;*********************************
20 ;
30 ; MODERN ERASE
40 ; USRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSR
50 ; (C) 1988 BY DIRK NEUMEISTER
60 ;
70 ; SIZE : $C000
80 ; LAENGE : 382 BYTE
90 ; SOURCE : 6515 BYTE
100 ;
110 ;*********************************
120 ;
130 ;
140 +$C000
150 ;
160 TAB(VIC=53248
170 TAB(CIA2=$DD00
180 TAB(BILD=648
190 TAB(BILD1=$0400
200 TAB(BILD2=$C400
210 ;
220 TOSATZ=$D000
230 TOZIEL=$E000
240 TOZEIGER=$FA
250 TOPOINTER=$FD
260 TOCLEAR=$E544
270 TOFLAG=$FC
280 TOKOMMA=$AEFD
290 TOGETBYTE=$B79E
300 TOGET=$0073
310 ;
320 ;
330 ;
340 ;*********************************
350 ;
360 ; AUSWERTUNG DES SYS-BEFEHLS
370 ;
380 ; SYS 49152 => LOESCHEN/ANZEIGEN
390 ;
400 ; SYS 49152,A,B,C,D,E,F,G,H
410 ;
420 ; => REIHENFOLGE FESTLEGEN
430 ;
440 ;*********************************
450 ;
460 ;
500 START MID$#","; TEST AUF KOMMA
510 LEN#00
520 STR$($7A),Y
530 (null)START3; WENN NEIN, DANN DIREKT STARTEN
540 PEEK#08; SONST ACHT ZAHLEN, DIE DIE REIHENFOLGE ANGEBEN
550 (null)$F7
560 START2 (null)KOMMA
570 (null)GETBYTE; EINLESEN UND
580 (null)
590 PEEK$F7
600 (null)REIHENFOL,X; SPEICHERN
610 CHR$$F7
620 (null)START2
630 START3 (null)ZCLEAR; SELBST MODIFZ. CODE (JMP ($4C) = LOESCHEN,
640 ; ; BIT ($2A) = LADEN )
650 ;
660 ;
670 ;
680 ;*********************************
690 ;
700 ; VORBEREITUNG DER MODERN-ROUTINE
710 ;
720 ; ZUM ANZEIGEN
730 ;
740 ;*********************************
750 ;
760 ;
1000 ZLADEN POKEXYCLOSE(LADEBIT),VARIAB+1; ADR. VERKN.BYTE ZUM ANZEIGEN SCHREIBEN
1010 POKEXCLOSE$31,MODERN2-3; PROGRAMM FUER ZEICHENSATZLESEN AENDERN
1020 POKEXYCLOSE$D000,$FD; STARTADRESSE ZEICHENSATZ
1030 POKEXYCLOSE$E000,$FA; ENDADRESSE ZEICHENSATZ
1040 POKEXCLOSE$11,ODER; ODER-VERKNUEPUNG ZULASSEN
1050 POKEXCLOSE$A9,LDA; LDA-BEFEHL ERLAUBEN
1060 POKEXCLOSE$08,FLAG; FLAG FUER ACHT DURCHLAEUFE SETZEN
1070 (null)MODERN; DIE EIGENTLICHE ROUTINE AUFRUFEN
1080 VERSCHIEBECLOSE$C400,$C800,$0800
1090 BILD0400; UND WIEDER AUF ORIGINALBILDSCHIRM UMSCHALTEN
1100 POKEACLOSE$4C,START3; JMP-BEFEHL ERLAUBEN => SYS49152 = LOESCHEN
1110 (null)
1120 ;
1130 ;
1140 ;
1150 ;*********************************
1160 ;
1170 ; VORBEREITUNG DER MODERN-ROUTINE
1180 ;
1190 ; ZUM LOESCHEN
1200 ;
1210 ;*********************************
1220 ;
1230 ;
2000 ZCLEAR RAMCLOSE$31; ZEICHENSATZ KOPIEREN
2010 COPYCLOSESATZ,$02,ZIEL,$04,4
2020 ROM
2030 VERSCHIEBECLOSE$0400,$0800,$C800;BILDSCHIRM KOPIEREN
2040 BILDC400; UND NACH $C400 UMSCHALTEN
2050 POKEAXCLOSE(LOESCHBIT),VARIAB+1; AUF ZEICHEN LOESCHEN UMSCHALTEN
2060 POKEXCLOSE$34,MODERN2-3; ZUGRIFF AUF ROM UND NICHT AUF ZEICHENSATZ
2070 POKEXYCLOSE$E000,$FA; ZEICHENSATZ BEI $E000 KENNZEICHNEN
2080 POKEXYCLOSE$E000,$FD
2090 POKEXCLOSE$24,ODER; ODER-VERKUEPFUNG UNTERBINDEN (ODER => BIT ($24))
2100 POKEXCLOSE$24,LDA; LDA-VERKNUEPFUNG VERBIETEN (LDA => BIT ($24))
2110 POKEXCLOSE$08,FLAG; FLAG FUER ACHT DURCHLAEUFE SETZEN
2120 (null)MODERN; DIE EIGENTLICHE ROUTINE AUFRUFEN
2130 (null)CLEAR; BILDSCHIRM LOESCHEN
2140 POKEACLOSE$2A,START3; BEI NAECHSTEN AUFRUF: 'ZEICHEN LADEN'(KEIN JMP)
2150 (null)
2160 ;
2170 ;
2180 ;
2190 ;*********************************
2200 ;
2210 ; EIGENTLICHE ROUTINE ZUM
2220 ;
2230 ; LOESCHEN UND ERSCHEINEN LASSEN
2240 ;
2250 ;*********************************
2260 ;
2270 ;
3000 MODERN RAMCLOSE$34; RAM/ZEICHENSATZ EINSCHALTEN
3010 MODERN2 MID$REIHENFOL,X; VERKNUEPFUNGSBYTE IN ABHAENGIGKEIT DER ZU
3020 (null); BEARBEITENDEN SPEICHERSTELLE UND
3030 VARIAB MID$LADEBIT,Y; REIHENFOLGE LADEN
3040 LEN#00
3050 ASC(POINTER),Y; UND MIT DER SPEICHERSTELLE VERKNUEPFEN
3060 ODER (null)(ZEIGER),Y; (LOESCHEN: NUR 'AND', LADEN: 'AND' & 'ORA')
3070 (null)(ZEIGER),Y
3080 (null)
3090 (null)MODERN3; X UM EINS ERNIEDRIGEN, WENN KLEINER ALS 1, DANN
3100 PEEK#08; WIEDER AUF 8 SETZEN
3110 MODERN3 RIGHT$ZEIGER; ZEIGER UM EINS ERHOEHEN
3120 RIGHT$POINTER
3130 (null)MODERN4
3140 RIGHT$ZEIGER+1
3150 RIGHT$POINTER+1
3160 MODERN4 MID$ZEIGER+1; TEST OB ALLE SPEICHERSTELLEN BEARBEITET WURDEN
3170 STR$#$F0
3180 (null)MODERN2; WENN NEIN, DANN WIEDER ZURUECK UND WEITERMACHEN
3190 POKEACLOSE$E0,ZEIGER+1; ZEIGER WIEDER ZURUECKSTELLEN
3200 LDA POKEACLOSE$D0,POINTER+1
3210 (null); REIHENFOLGE DER VERKNUEFUNGSBYTE UM 1 VERRINGERN
3220 (null)MODERN5
3230 PEEK#08
3240 MODERN5 LENFLAG; TEST, OB DER ZEICHENSATZ SCHON ACHT MAL
3250 (null); BEARBEITET WORDEN IST
3260 (null)FLAG
3270 (null)MODERN2; WENN NEIN, DANN WEITER
3280 ROM; SONST ROM WIEDER EINSCHALTEN
3290 (null); UND RUECKSPRUNG
3300 ;
3310 ;
3320 ;
3330 ;*********************************
3340 ;
3350 ; TABELLEN
3360 ;
3370 ; - VERKNUEPFUNGSBYTE ZUM LOESCHEN
3380 ;
3390 ; - VERKNUEPFUNGSBYTE ZUM ANZEIGEN
3400 ;
3410 ; - REIHENFOLGE DER ANWENDUNG
3420 ;
3430 ;*********************************
3440 ;
3450 ;
10000 LOESCHBIT FN127,191,223,239,247,251,253,254
10010 LADEBIT FN128,64,32,16,8,4,2,1
10020 REIHENFOL FN0,0,7,1,6,2,5,3,4
10030 ;
10040 ;
10050 ;
10060 ;*********************************
10070 ;
10080 ; M A K R O S
10090 ;
10100 ; LOW LEVEL : - POKEAX
10110 ; - POKEXY
10120 ; - POKEA
10130 ; - POKEX
10140 ;
10150 ; HIGH LEVEL: - BILDC400
10160 ; - BILD0400
10170 ; - ROM
10180 ; - RAM
10190 ; - VERSCHIEBE
10200 ; - COPY
10210 ;
10220 ;*********************************
10230 ;
10240 ;
30000 GETPOKEAXCLOSEVAR,ADR; 16-BIT WERT SCHRIEBEN (VERWENDETE REGISTER: A,X)
30010 MID$#<(VAR)
30020 PEEK#>(VAR)
30030 (null)ADR
30040 (null)ADR+1
30050 NEW
30060 ;
30070 GETPOKEXYCLOSEVAR,ADR; 16-BIT WERT SCHREIBEN (VERWENDETE REGISTER: X,Y)
30080 PEEK#<(VAR)
30090 LEN#>(VAR)
30100 (null)ADR
30110 (null)ADR+1
30120 NEW
30130 ;
30140 GETPOKEACLOSEVAR,ADR; 8-BIT WERT SCHREIBEN (VERWENDETES REGISTER: A)
30150 MID$#VAR
30160 (null)ADR
30170 NEW
30180 ;
30190 GETPOKEXCLOSEVAR,ADR; 8-BIT WERT SCHREIBEN (VERWENDETES REGISTER: X)
30200 PEEK#VAR
30210 (null)ADR
30220 NEW
30230 ;
30240 ;* * * * * * * * * * * * * * * * *
30250 ;
30260 GETBILDC400; BILDSCHIRM IM BEREICH $C400 EINSCHALTEN
30270 MID$CIA2
30280 ASC#252
30290 (null)CIA2
30300 POKEXCLOSE196,BILD
30310 MID$VIC+24
30320 ASC#$F3
30330 (null)#24
30340 (null)VIC+24
30350 NEW
30360 ;
30370 GETBILD0400; BILDSCHIRM IM BEREICH $0400 EINSCHALTEN
30380 MID$CIA2
30390 (null)#03
30400 (null)CIA2
30410 POKEXCLOSE04,BILD
30420 MID$VIC+24
30430 ASC#$F3
30440 (null)#20
30450 (null)VIC+24
30460 NEW
30470 ;
30480 GETVERSCHIEBECLOSEANFANG,ENDE,NACH; ROM VERSCHIEBE-ROUTINE AUFRUFEN
30490 POKEXYCLOSEANFANG,$5F
30500 POKEXYCLOSEENDE,$5A
30510 POKEXYCLOSENACH,$58
30520 (null)$A3BF
30530 NEW
30540 ;
30550 GETROM; AUF ROM UMSCHALTEN
30560 (null)
30570 (null)$01
30580 (null)
30590 NEW
30600 ;
30610 GETRAMCLOSEVAR; AUF RAM/ZEICHENSATZ UMSCHALTEN
30620 (null)
30630 MID$$01
30640 (null)
30650 POKEACLOSEVAR,$01
30660 NEW
30670 ;
30680 GETCOPYCLOSEBEGINN,VAR1,ENDE,VAR2,LAENGE; 16-BIT VERSCHIEBE-ROUTINE
30690 POKEAXCLOSE(BEGINN),VAR1
30700 POKEAXCLOSE(ENDE),VAR2
30710 PEEK#LAENGE*8
30720 LEN#00
30730 COPY1 MID$(VAR1),Y
30740 (null)(VAR2),Y
30750 (null)
30760 (null)COPY1
30770 RIGHT$VAR1+1
30780 RIGHT$VAR2+1
30790 (null)
30800 (null)COPY1
30810 NEW
30820 ;
30830 ;
30840 ;
30850 ;*********************************
30860 ;
30870 ; ENDE DES QUELLCODE-LISTINGS
30880 ;
30890 ;*********************************
30900 ;
30910 ;
60000 <